{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Main.VAE"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "include(\"vae_mnist.jl\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "┌ Info: using Knet.KnetArray{Float32,N} where N\n",
      "└ @ Main.VAE /scratch/users/dyuret/.julia/dev/Knet/examples/variational-autoencoder/vae_mnist.jl:128\n",
      "┌ Info: Loading MNIST...\n",
      "└ @ Main.VAE /kuacc/users/dyuret/.julia/dev/Knet/data/mnist.jl:33\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(:epoch, 0, :trn, 0.69407445f0, :tst, 0.6940691f0)\n",
      "  0.000003 seconds (1 allocation: 32 bytes)\n"
     ]
    }
   ],
   "source": [
    "# obtain a non-trained network\n",
    "θ, ϕ = VAE.main(\"--infotime 10 --seed 1 --epochs 0\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "146×146 reinterpret(Gray{Float64}, ::Array{Float64,2}):\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.0)       Gray{Float64}(1.0)       …  Gray{Float64}(1.0)       Gray{Float64}(1.0)       Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.465493)  Gray{Float64}(0.493026)     Gray{Float64}(0.518109)  Gray{Float64}(0.5342)    Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.473488)  Gray{Float64}(0.494953)     Gray{Float64}(0.506765)  Gray{Float64}(0.483546)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.515756)  Gray{Float64}(0.481142)     Gray{Float64}(0.511525)  Gray{Float64}(0.486153)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.498347)  Gray{Float64}(0.528746)     Gray{Float64}(0.540031)  Gray{Float64}(0.487542)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.490459)  Gray{Float64}(0.49687)   …  Gray{Float64}(0.491125)  Gray{Float64}(0.510172)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.519256)  Gray{Float64}(0.509888)     Gray{Float64}(0.479246)  Gray{Float64}(0.518007)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.527398)  Gray{Float64}(0.535441)     Gray{Float64}(0.492743)  Gray{Float64}(0.507711)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.470825)  Gray{Float64}(0.477394)     Gray{Float64}(0.518789)  Gray{Float64}(0.53604)   Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.491555)  Gray{Float64}(0.484675)     Gray{Float64}(0.500074)  Gray{Float64}(0.529853)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.480501)  Gray{Float64}(0.513466)  …  Gray{Float64}(0.487408)  Gray{Float64}(0.477061)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.517309)  Gray{Float64}(0.510397)     Gray{Float64}(0.496706)  Gray{Float64}(0.471051)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.536235)  Gray{Float64}(0.519827)     Gray{Float64}(0.498605)  Gray{Float64}(0.503895)  Gray{Float64}(1.0)\n",
       " ⋮                                                                     ⋱                                                    ⋮                 \n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.503982)  Gray{Float64}(0.487512)     Gray{Float64}(0.538122)  Gray{Float64}(0.474838)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.502302)  Gray{Float64}(0.480775)  …  Gray{Float64}(0.503316)  Gray{Float64}(0.518814)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.496814)  Gray{Float64}(0.489403)     Gray{Float64}(0.546551)  Gray{Float64}(0.507969)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.489236)  Gray{Float64}(0.492552)     Gray{Float64}(0.497295)  Gray{Float64}(0.517842)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.465844)  Gray{Float64}(0.503064)     Gray{Float64}(0.514119)  Gray{Float64}(0.476883)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.49738)   Gray{Float64}(0.473747)     Gray{Float64}(0.475964)  Gray{Float64}(0.4783)    Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.497248)  Gray{Float64}(0.497163)  …  Gray{Float64}(0.499201)  Gray{Float64}(0.494201)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.496986)  Gray{Float64}(0.480509)     Gray{Float64}(0.468698)  Gray{Float64}(0.550977)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.486814)  Gray{Float64}(0.49371)      Gray{Float64}(0.483821)  Gray{Float64}(0.47438)   Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.510333)  Gray{Float64}(0.494657)     Gray{Float64}(0.514079)  Gray{Float64}(0.456162)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(0.517069)  Gray{Float64}(0.496021)     Gray{Float64}(0.485805)  Gray{Float64}(0.493946)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.0)       Gray{Float64}(1.0)       …  Gray{Float64}(1.0)       Gray{Float64}(1.0)       Gray{Float64}(1.0)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# generate examples with the non-trained network\n",
    "VAE.plot_dream(θ);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "┌ Info: using Knet.KnetArray{Float32,N} where N\n",
      "└ @ Main.VAE /scratch/users/dyuret/.julia/dev/Knet/examples/variational-autoencoder/vae_mnist.jl:128\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(:epoch, 0, :trn, 0.69407445f0, :tst, 0.6940691f0)\n",
      "(:epoch, 10, :trn, 0.1342375f0, :tst, 0.13388233f0)\n",
      "(:epoch, 20, :trn, 0.13172625f0, :tst, 0.13162959f0)\n",
      "(:epoch, 30, :trn, 0.13075073f0, :tst, 0.13084349f0)\n",
      "(:epoch, 40, :trn, 0.1299894f0, :tst, 0.13014986f0)\n",
      "(:epoch, 50, :trn, 0.12993519f0, :tst, 0.13022722f0)\n",
      "(:epoch, 60, :trn, 0.12906802f0, :tst, 0.12956339f0)\n",
      "(:epoch, 70, :trn, 0.12878795f0, :tst, 0.12937565f0)\n",
      "(:epoch, 80, :trn, 0.128444f0, :tst, 0.1289516f0)\n",
      "(:epoch, 90, :trn, 0.12825556f0, :tst, 0.12884992f0)\n",
      "(:epoch, 100, :trn, 0.12784874f0, :tst, 0.128488f0)\n",
      "190.181684 seconds (163.13 M allocations: 25.435 GiB, 2.31% gc time)\n"
     ]
    }
   ],
   "source": [
    "# train a VAE network for 100 epochs\n",
    "θ, ϕ = VAE.main(\"--infotime 10 --seed 1 --epochs 100\"); # 184s, 0.12784874f0, 0.128488f0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "146×146 reinterpret(Gray{Float64}, ::Array{Float64,2}):\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.0)          Gray{Float64}(1.0)          …  Gray{Float64}(1.0)          Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(5.42145e-10)  Gray{Float64}(8.47233e-10)     Gray{Float64}(3.13802e-10)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(4.6406e-10)   Gray{Float64}(5.05738e-10)     Gray{Float64}(2.70206e-10)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(6.48157e-10)  Gray{Float64}(7.93943e-10)     Gray{Float64}(4.85969e-10)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(7.24119e-10)  Gray{Float64}(4.92327e-10)     Gray{Float64}(4.69939e-10)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(5.23383e-10)  Gray{Float64}(6.41949e-12)  …  Gray{Float64}(7.76656e-21)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(5.08423e-10)  Gray{Float64}(5.73705e-10)     Gray{Float64}(1.14637e-15)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(4.51368e-10)  Gray{Float64}(8.73778e-12)     Gray{Float64}(3.19496e-15)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(3.13489e-12)  Gray{Float64}(1.82091e-7)      Gray{Float64}(6.17992e-20)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(4.40692e-11)  Gray{Float64}(1.41885e-5)      Gray{Float64}(6.1973e-24)   Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(5.67429e-9)   Gray{Float64}(0.000387833)  …  Gray{Float64}(2.65475e-26)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(8.47838e-10)  Gray{Float64}(0.000291169)     Gray{Float64}(2.84282e-25)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(3.26765e-9)   Gray{Float64}(1.90195e-5)      Gray{Float64}(1.92175e-17)  Gray{Float64}(1.0)\n",
       " ⋮                                                                           ⋱                              ⋮                 \n",
       " Gray{Float64}(1.0)  Gray{Float64}(2.03766e-11)  Gray{Float64}(1.02911e-7)      Gray{Float64}(1.96437e-14)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(2.5228e-10)   Gray{Float64}(1.9947e-9)    …  Gray{Float64}(4.31635e-16)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(6.84054e-10)  Gray{Float64}(1.15131e-8)      Gray{Float64}(4.34582e-11)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.13391e-11)  Gray{Float64}(1.05374e-15)     Gray{Float64}(4.55796e-8)   Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(9.12632e-8)   Gray{Float64}(4.26046e-10)     Gray{Float64}(2.25448e-18)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.05808e-7)   Gray{Float64}(1.52922e-8)      Gray{Float64}(1.13629e-19)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(2.06093e-11)  Gray{Float64}(1.30257e-11)  …  Gray{Float64}(3.8568e-10)   Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.53596e-11)  Gray{Float64}(1.84837e-11)     Gray{Float64}(2.35693e-10)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.66062e-11)  Gray{Float64}(1.31266e-11)     Gray{Float64}(1.98562e-10)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.71134e-11)  Gray{Float64}(1.01859e-11)     Gray{Float64}(1.61589e-10)  Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.64764e-11)  Gray{Float64}(2.48355e-11)     Gray{Float64}(1.9981e-10)   Gray{Float64}(1.0)\n",
       " Gray{Float64}(1.0)  Gray{Float64}(1.0)          Gray{Float64}(1.0)          …  Gray{Float64}(1.0)          Gray{Float64}(1.0)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# generate examples with the trained network\n",
    "VAE.plot_dream(θ);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 1.0.0",
   "language": "julia",
   "name": "julia-1.0"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "1.0.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
